//给你两个只包含 1 到 9 之间数字的数组 nums1 和 nums2 ，每个数组中的元素 互不相同 ，请你返回 最小 的数字，两个数组都 至少 包含这个数
//字的某个数位。
//
// 
//
// 示例 1： 
//
// 输入：nums1 = [4,1,3], nums2 = [5,7]
//输出：15
//解释：数字 15 的数位 1 在 nums1 中出现，数位 5 在 nums2 中出现。15 是我们能得到的最小数字。
// 
//
// 示例 2： 
//
// 输入：nums1 = [3,5,2,6], nums2 = [3,1,7]
//输出：3
//解释：数字 3 的数位 3 在两个数组中都出现了。
// 
//
// 
//
// 提示： 
//
// 
// 1 <= nums1.length, nums2.length <= 9 
// 1 <= nums1[i], nums2[i] <= 9 
// 每个数组中，元素 互不相同 。 
// 
//
// Related Topics 数组 哈希表 枚举 👍 54 👎 0


package LeetCode.editor.cn;

import java.util.HashSet;
import java.util.Set;

/**
 * @author ldltd
 * @date 2023-09-05 13:49:41
 * @description 2605.从两个数字数组里生成最小数字
 */
public class FormSmallestNumberFromTwoDigitArrays{
	 public static void main(String[] args) {
	 	 //测试代码
	 	 Solution solution = new FormSmallestNumberFromTwoDigitArrays().new Solution();

	 }
	 
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int minNumber(int[] nums1, int[] nums2) {
		int a=nums1[0];
		int b=nums2[0];
		int c=10;
		Set<Integer> set = new HashSet<>();
		for (int i = 0; i < nums1.length; i++) {
			a=Math.min(a,nums1[i]);
			set.add(nums1[i]);
		}
		for (int i = 0; i < nums2.length; i++) {
			b=Math.min(b,nums2[i]);
//			c=set.contains(nums2[i])?Math.min(c,nums2[i]):c;
			if(set.contains(nums2[i])){
				c=Math.min(c,nums2[i]);
			}
		}
		if(c!=10) return c;
		else return a>b?b*10+a:a*10+b;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
